//Class of a data point for clustering
#pragma once
#include <vector>
 
using namespace std;
 
const int DIME_NUM=5;        //feature dimension = 5

class DataPoint
{
 private:
     unsigned long dpID;
     double pointData[DIME_NUM];
     long clusterId;
	 bool isKey;
     bool visited;
     vector<unsigned long> neighborIds;
 public:
     DataPoint();
     DataPoint(unsigned long dpID,double* dimension , bool isKey);
 
     unsigned long GetDpId();				//GetDpId
     void SetDpId(unsigned long dpID);      //SetDpId
     double* GetData();						//GetData
     void SetData(double* pointData);		//SetDimension
     bool IsKey();                          //GetIsKey
     void SetKey(bool isKey);               //SetKey
     bool isVisited();                      //GetIsVisited
     void SetVisited(bool visited);         //SetIsVisited
     long GetClusterId();                   //GetClusterId
     void SetClusterId(long classId);       //SetClusterId
     vector<unsigned long>& GetNeighborIds();    //GetNeighborPoints
};
